home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / ant / antenna2 / woodaf.bas < prev    next >
BASIC Source File  |  1986-09-08  |  5KB  |  160 lines

  1. 10 CLS:KEY OFF
  2. 20 PRINT"                       WOODWARD-LAWSON ARRAY SYNTHESIS"
  3. 30 REM  WOODWARD-LAWSON SAMPLING METHOD
  4. 40 REM       ARRAY SYNTHESIS
  5. 50 REM            7/14/86
  6. 60 REM     AHMAD FAIZAL MOHD ZAIN
  7. 70 '
  8. 80 PI=3.141596
  9. 90 INPUT"NUMBER OF ELEMENTS ";NE
  10. 100 INPUT"SPACING BETWEEN ELEMENTS ";D
  11. 110 NMAX=NE*D
  12. 120 NM=NMAX*2+1
  13. 130 DIM W(200),A(200),F(181),I(200),Z(200),ANG(200)
  14. 140 DIM Y(200),PHI(200)
  15. 150 CLS:PRINT"Sample point","  w(n)","angle(n)","desired"
  16. 160 I=0
  17. 170 FOR N=-NMAX TO NMAX
  18. 180  I=I+1
  19. 190   W(I)=N/(NE*D)
  20. 200  X=W(I)
  21. 210  IF X*X=1 AND X>0 THEN ANG(I)=0:GOTO 240
  22. 220  IF X*X=1 AND X<0 THEN ANG(I)=-180:GOTO 240
  23. 230  ACOS=1.570796-ATN(X/SQR(1-X*X)):ANG(I)=180*ACOS/PI
  24. 240   PRINT USING "###        ##.##         ####.##        ";-N,W(I),ANG(I),:INPUT A(I)
  25. 250 NEXT N
  26. 260 GOSUB 1030
  27. 270 CLS:GOSUB 1490
  28. 280 '
  29. 290 FOR THETA=0 TO 180
  30. 300 W=COS(THETA*PI/180)
  31. 310 F(THETA)=0
  32. 320 I=0
  33. 330 FOR N=-NMAX TO NMAX
  34. 340   I=I+1
  35. 350   A=SIN((NE/2)*(W-W(I))*(2*PI)*D)
  36. 360   B=NE*SIN(.5*(W-W(I))*(2*PI)*D)
  37. 370   IF A=0 AND B=0 THEN F(THETA)=F(THETA)+A(I):GOTO 390
  38. 380   F(THETA)=F(THETA)+A(I)*A/B
  39. 390 NEXT N
  40. 400 Y(THETA)=F(THETA)
  41. 410 IF F(THETA)>YMAX THEN YMAX=F(THETA)
  42. 420 IF F(THETA)<YMIN THEN YMIN=F(THETA)
  43. 430 NEXT THETA
  44. 440 '
  45. 450 GOSUB 1100
  46. 460 GOSUB 1190
  47. 470 GOSUB 1480
  48. 480 '
  49. 490 '    calculate current
  50. 500 CLS
  51. 510 PRINT"element number     element position     excitation current        PHASE SHIFT"
  52. 520 '
  53. 530 I=0
  54. 540 YMAX=0:YMIN=0
  55. 550 PMAX=0:PMIN=0
  56. 560 EVEN=0
  57. 570 IF NE MOD 2=0 THEN EVEN=1
  58. 580 IF EVEN=1 THEN NN=NE/2 ELSE NN=(NE-1)/2
  59. 590 FOR M=-NN TO -1
  60. 600   I=I+1
  61. 610   CR=0:CI=0:J=0
  62. 620   IF EVEN<>1 THEN Z(I)=M*D ELSE Z(I)=(2*M+1)*D/2
  63. 630 GOSUB 780
  64. 640 GOSUB 850
  65. 650 NEXT M
  66. 660 M=0:CR=0:CI=0:I=0
  67. 670 IF EVEN=0 THEN Z(M)=M*D ELSE 700
  68. 680 GOSUB 780:GOSUB 850
  69. 690 I=0
  70. 700 FOR M=1 TO NN
  71. 710   I=I+1
  72. 720   CR=0:CI=0:J=0
  73. 730   IF EVEN<>1 THEN Z(I)=M*D ELSE Z(I)=(2*I-1)*D/2
  74. 740   GOSUB 780
  75. 750 GOSUB 850
  76. 760 NEXT M
  77. 770 GOSUB 1510
  78. 780   FOR N=-NMAX TO NMAX
  79. 790     A=2*PI*Z(I)*W(J)
  80. 800     CR=CR+A(J)*COS(A)
  81. 810     CI=CI+A(J)*SIN(A)
  82. 820     J=J+1
  83. 830   NEXT N
  84. 840 RETURN
  85. 850 CR=CR/NE:CI=CI/NE
  86. 860 IF CR>0 THEN PHI(I)=(180/PI)*ATN(CI/CR):GOTO 910
  87. 870 IF CR<0 THEN PHI(I)=180*SGN(CI)+(180/PI)*ATN(CI/CR):GOTO 910
  88. 880 IF CR=0 THEN PHI(I)=90*SGN(CI):GOTO 910
  89. 890 IF CI=0 AND CR<0 THEN PHI(I)=180:GOTO 910
  90. 900 PHI=ATN(CI/CR):PHI(I)=PHI*180/PI
  91. 910 IF PHI(I)=-180 THEN PHI(I)=180
  92. 920 IF PHI(I)=-0 THEN PHI(I)=0
  93. 930 I(I)=SQR(CR*CR+CI*CI)
  94. 940 IF PHI(I)>PMAX THEN PMAX=PHI(I)
  95. 950 IF PHI(I)<PMIN THEN PMIN=PHI(I)
  96. 960 PRINT USING "    ###                ##.##               ###.#####              ####.## ";M;Z(I);I(I),PHI(I)
  97. 970 RETURN
  98. 980 INPUT"DO YOU WANT TO MAKE ANY CHANGES";AN$
  99. 990 IF AN$="N" OR AN$="n" THEN RETURN
  100. 1000 INPUT"TYPE SAMPLING POINT TO CHANGE ";Q
  101. 1010 PRINT USING "###        ##.##         ####.##       ##.## ";Q,W(Q),ANG(Q),A(Q),:INPUT A(Q)
  102. 1020 '
  103. 1030 CLS:PRINT"sample no    w(n)         angle      desired sample"
  104. 1040 I=0:FOR N=-NMAX TO NMAX :I=I+1
  105. 1050 PRINT USING "###        ##.##         ####.##          ##.## ";I,W(I),ANG(I),A(I)
  106. 1060 NEXT N
  107. 1070 PRINT
  108. 1080 GOSUB 980
  109. 1090 RETURN
  110. 1100 '      MAY 29, 1986
  111. 1110 '      RECTANGULAR PLOT OF DATA
  112. 1120 SCREEN 2:CLS
  113. 1130 FOR K=7 TO 67 STEP 10:LOCATE 20,K:PRINT"+";:NEXT K
  114. 1150 VIEW (52,28)-(530,154),,1
  115. 1160 LINE (239,0)-(239,154)
  116. 1170 RETURN
  117. 1180 '
  118. 1190 PSET (0,Y(0))
  119. 1200 WINDOW (0,YMIN)-(180,YMAX)
  120. 1202 LINE (0,0)-(180,0),,,&HF0F0
  121. 1204 PRESET (0,1)
  122. 1206 LINE (0,1)-(180,1),,,&HF0F0
  123. 1208 PRESET (0,Y(0))
  124. 1210 FOR X=0 TO 180
  125. 1220   LINE -(X,Y(X))
  126. 1230 NEXT X
  127. 1240 LOCATE 3,20:PRINT"MAGNITUDE OF SYNTHESISED PATTERN"
  128. 1260 LOCATE 21,6:PRINT"180":LOCATE 21,37:PRINT"90":LOCATE 21,67:PRINT"0"
  129. 1270 RETURN
  130. 1280 '
  131. 1290 '      MAY 29, 1986
  132. 1300 '      RECTANGULAR PLOT OF DATA
  133. 1310 LOCATE 3,20:PRINT"MAGNITUDE OF CURRENT DISTRIBUTION"
  134. 1320 '
  135. 1330 WINDOW (1,YMIN)-(I,YMAX)
  136. 1340 '
  137. 1350 PSET (1,Y(1))
  138. 1360 FOR X=1 TO I
  139. 1370   LINE -(X,Y(X))
  140. 1380 NEXT X
  141. 1390 LOCATE 21,6:PRINT-L/2:LOCATE 21,37:PRINT"0":LOCATE 21,66:PRINT L/2
  142. 1400 RETURN
  143. 1410 '
  144. 1420 WINDOW (1,PMIN)-(I,PMAX)
  145. 1430 PSET (1,PHI(1))
  146. 1440 FOR X=1 TO I
  147. 1450   LINE -(X,PHI(X))
  148. 1460 NEXT X
  149. 1470 RETURN
  150. 1480 LOCATE 24,1:PRINT"TYPE <RETURN> TO CONTINUE...";:INPUT W:SCREEN 0,0
  151. 1490 PRINT"I'M DOING SOME CALCULATION.  PLEASE WAIT..."
  152. 1500 RETURN
  153. 1510 T$="DO YOU WANT TO RUN THIS PROGRAM AGAIN (Y/N)? ":LC=23:GOSUB 1570
  154. 1520 AN$=INKEY$
  155. 1530 IF AN$="Y" OR AN$="y" THEN RUN
  156. 1540 IF AN$="N" OR AN$="n" THEN END
  157. 1550 GOTO 1510
  158. 1560 :
  159. 1570 LOCATE LC,(80-LEN(T$))/2+1:PRINT T$:RETURN    'SUBROUTINE TO CENTRE TEXT
  160.